<?php

namespace System\Loader;

/**
 * 类库装载器接口类
 *
 * @package Dream
 * @subpackage ClassLoaderInterface
 * @namespace System\Loader
 * @author lewis (lewisld@yeah.net)
 */
interface ClassLoaderInterface
{

    /**
     * 注册类库自动加载方法
     *
     * @static
     * @access public
     * @param array|string $method 类库的自动加载方法，为空则默认“loadClass”
     * @return void 没有返回值
     */
    public function registerAutoloader($method = 'loadClass');

    /**
     * 注销类库自动加载方法
     *
     * @static
     * @access public
     * @param array|string $method 类库的自动加载方法
     * @return void 没有返回值
     */
    public function unregisterAutoloader($method);

    /**
     * 注册命名空间
     *
     * @static
     * @access public
     * @param string $prefix 命名空间名称
     * @param array|string $library 命名空间指向的类库目录，若要指向多个目录请使用数组
     * @return void 没有返回值
     */
    public function registerNameSpace($prefix, $library = []);

    /**
     * 注销命名空间
     *
     * @static
     * @access public
     * @param string|array $prefix 命名空间名称，若要一次性注销多个命名空间请使用数组
     * @return void 没有返回值
     */
    public function unregisterNameSpace($prefix);


}